Full Route Cache
warning.icon 15 から Data Cache がデフォルトで無効になったため、以前よりもキャッシュされる条件が厳しくなった
Full Route Cache#66ecd3fc75d04f0000db1b29
https://nextjs.org/docs/app/building-your-application/caching#full-route-cache
概要
Next.js の 4 種類のキャッシュ の 1 つで、レンダリングコストの削減とパフォーマンスの向上を目的とする
ビルドまたは Revalidate 時に、Static Rendering する Route に対して、自動で RSC Payload と HTML をレンダリングしてその結果をキャッシュする
クライアントからのリクエスト時にレンダリングを行うのではなく、事前に生成した RSC Payload と HTML を利用することで、パフォーマンスの向上が期待できる
永続的に保持されるが、以下のいずれかの方法で Revalidate 可能
1. Data Cache を Revalidate する
サーバ上のコンポーネントを再レンダリングし、新しいレンダリング結果を出力するため
Full Route Cache#66ecd2c475d04f0000db1b23
2. 再デプロイ
以下のいずれかの方法で無効化できる
Dynamic Functions を利用する
Route Segment Config を用いる
code:ts
export const dynamic = 'force-dynamic';
// または
export const revalidate = 0;
Data Cache が無効になった fetch が存在する
If a route has a fetch request that is not cached, this will opt the route out of the Full Route Cache.
https://arc.net/l/quote/rlsupgcp
動作フロー
サーバ上での React のレンダリング
https://scrapbox.io/files/66ecd2c5a154db001dca39fe.png
1. React が React Server Component を RSC Payload に変換
2. Next.js が RSC Payload と Client Component の JavaScript を用いて、HTML を生成
クライアント上での React による Hydration と Reconciliation
1. HTML は初期表示データとして用いられる
2. RSC Payload は差分検出し、DOM を更新するために用いられる
3. Client Component を Hydration し、アプリケーションをインタラクティブな状態にする
#Next.js